home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / library / extend / wfcutpst.s < prev    next >
Text File  |  1998-03-20  |  5KB  |  196 lines

  1. ;------------------------------------------------------------------------------
  2. ; Method name : GWVA_METHOD_WIND_CLIPBOARD_COPY
  3. ; Asm label   : GWVA_WFORM_PRG_CLIPBOARD_COPY
  4. ; Description : Méthode effectuant la copie du champ de texte éditable dans le 
  5. ;               clipboard GEM
  6. ; in  : a0.l = pointeur sur l'objet fenêtre
  7. ; out : d6.w = GWVA_PRGRET_CONSUMED
  8. ;
  9. ; 19/03/98 : Création
  10. ;------------------------------------------------------------------------------
  11. GWVA_WFORM_PRG_CLIPBOARD_COPY:
  12. ; rajouter BEFORE et AFTER
  13.  
  14.     bftst GWVA_WIND_OBJ_PROPERTIES(a0){GWVA_WIND_OLBIT_CTRLC:1}
  15.     beq.s .pas_de_ctrlc_possible
  16.  
  17.     ifd MDL_FORM_EDITABLE_TEXT
  18.  
  19.     tst.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0)
  20.     bmi .pas_de_texte_editable_dans_fenetre
  21.  
  22.     save.l a0
  23.     bsr GWVA_CLIPB_CLEAR_CLIPBOARD
  24.     load.l a0
  25.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  26.     bne.s .erreur_de_clipboard
  27.  
  28.     move.w GWVA_WRSC_OBJ_TREE(a0),d0
  29.     move.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0),d1
  30.  
  31.     save.l a0
  32.     bsr GWVA_RSC_COUNT_TEXT_OBJ_LENGTH    ; -> d0.l = taille texte, a0.l pointeur sur le texte
  33.     move.l #'TXT'*256,d1
  34.     bsr GWVA_CLIPB_COPY
  35.     load.l a0
  36.  
  37.     move.w #GWVA_NO_ERROR_GENERIC,d7
  38. .erreur_de_clipboard:
  39.     move.w #GWVA_PRGRET_CONSUMED,d6
  40.     rts
  41. .pas_de_texte_editable_dans_fenetre:
  42. .pas_fenetre_formulaire:
  43.  
  44.     endc    ; ifd MDL_FORM_EDITABLE_TEXT
  45.  
  46. .pas_de_ctrlc_possible:
  47.     move.w #GWVA_ERROR_GENERIC,d7
  48.     move.w #GWVA_PRGRET_CONSUMED,d6
  49.     rts
  50.  
  51. ;------------------------------------------------------------------------------
  52. ; Method name : GWVA_METHOD_WIND_CLIPBOARD_CUT
  53. ; Asm label   : GWVA_WFORM_PRG_CLIPBOARD_CUT
  54. ; Description : Méthode effectuant la copie du champ de texte éditable dans le 
  55. ;               clipboard GEM et effaçant ce champ texte
  56. ; in  : a0.l = pointeur sur l'objet fenêtre
  57. ; out : d6.w = GWVA_PRGRET_CONSUMED
  58. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
  59. ;
  60. ; 19/03/98 : Création
  61. ;------------------------------------------------------------------------------
  62. GWVA_WFORM_PRG_CLIPBOARD_CUT:
  63. ; rajouter BEFORE et AFTER
  64.  
  65.     bftst GWVA_WIND_OBJ_PROPERTIES(a0){GWVA_WIND_OLBIT_CTRLX:1}
  66.     beq.s .pas_de_ctrlx_possible
  67.  
  68.     GWVA_CALL_METHOD    #GWVA_METHOD_WIND_CLIPBOARD_COPY,#GWVA_MODE_SEARCH_EXEC_UNIQUE
  69. *    cmp.w #GWVA_NO_ERROR_GENERIC,d7
  70. *    bne.s .erreur_de_clipboard
  71.  
  72.     ifd MDL_FORM_EDITABLE_TEXT
  73.  
  74.     tst.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0)
  75.     bmi .pas_de_texte_editable_dans_fenetre
  76.  
  77.     move.w GWVA_WRSC_OBJ_TREE(a0),d0
  78.     move.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0),d1
  79.     save.l a0
  80.     bsr GWVA_RSC_RETURN_PTR_ON_TEXT
  81.     clr.b (a1)
  82.     load.l a0
  83.  
  84.     fail    ; Comment je fais ici ?
  85.  
  86.     move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
  87.     move.w #0,d0
  88.     move.w #7,d1
  89.     clr.w d2
  90.     bsr GWVA_FORM_WIND_OBJ_PRG_REDRAW_PART
  91.  
  92.     move.w #GWVA_NO_ERROR_GENERIC,d7
  93. .erreur_de_clipboard:
  94.     move.w #GWVA_PRGRET_CONSUMED,d6
  95.     rts
  96. .pas_de_texte_editable_dans_fenetre:
  97. .pas_fenetre_formulaire:
  98.  
  99.     endc    ; ifd MDL_FORM_EDITABLE_TEXT
  100.  
  101. .pas_de_ctrlx_possible:
  102.     move.w #GWVA_ERROR_GENERIC,d7
  103.     move.w #GWVA_PRGRET_CONSUMED,d6
  104.     rts
  105.  
  106. ;------------------------------------------------------------------------------
  107. ; Method name : GWVA_METHOD_WIND_CLIPBOARD_CUT
  108. ; Asm label   : GWVA_WFORM_PRG_CLIPBOARD_CUT
  109. ; Description : Méthode effectuant la copie du champ de texte éditable dans le 
  110. ;               clipboard GEM et effaçant ce champ texte
  111. ; in  : a0.l = pointeur sur l'objet fenêtre
  112. ; out : d6.w = GWVA_PRGRET_CONSUMED
  113. ; out : d7.w = GWVA_NO_ERROR_GENERIC ou erreur
  114. ;
  115. ; 19/03/98 : Création
  116. ;------------------------------------------------------------------------------
  117. GWVA_WFORM_PRG_CLIPBOARD_PASTE:
  118. ; rajouter BEFORE et AFTER
  119.  
  120.     bftst GWVA_WIND_OBJ_PROPERTIES(a0){GWVA_WIND_OLBIT_CTRLV:1}
  121.     beq .pas_de_ctrlv_possible
  122.  
  123.     ifd MDL_FORM_EDITABLE_TEXT
  124.  
  125.     tst.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0)
  126.     bmi .pas_de_texte_editable_dans_fenetre
  127.  
  128.     save.l a0
  129.     move.l #'TXT'*256,d0
  130.     move.w #MX_PREFTTRAM,d1
  131.     bsr GWVA_CLIPB_PASTE_IN_MEM
  132.     move.l a0,a2
  133.     load.l a0
  134.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  135.     bne.s .erreur_lecture_clipboard
  136.     tst.l d0
  137.     beq.s .fichier_scrap_nul
  138.  
  139.     save.l d0/a0/a2
  140.     move.w GWVA_WRSC_OBJ_TREE(a0),d0
  141.     move.w GWVA_WFORM_OBJ_FOCUSED_IDX(a0),d1
  142.     bsr GWVA_RSC_RETURN_PTR_ON_OBJ    ; -> objet texte éditable pointé par a1
  143.     load.l d0/a0/a2
  144.  
  145.     move.w GWVA_WFORM_OBJ_FOCUSED_IDX_CURSOR_POS(a0),d1
  146.     move.l d0,d2
  147.  
  148.     save.l a0-a2
  149.     move.l a1,a0
  150.  
  151.     fail    ; Manque encore une routine
  152.  
  153. .insertion_du_clipboard:
  154.     move.b (a2)+,d0
  155.     beq.s .pas_insertion_0
  156.     save.l d2/a2
  157.     move.w #2,d2    ; mode normale d'insertion 
  158.     bsr GWVA_WFORM_OBJ_PRG_INSERT_CHAR_IN_EDITABLE_TEXT
  159.     load.l d2/a2
  160.     move.w d0,d1    ; nouvelle position curseur
  161. .pas_insertion_0:
  162.     sub.l #1,d2
  163.     bne.s .insertion_du_clipboard
  164.  
  165.     movem.l (sp),a0-a2
  166.  
  167.     MFREE a2
  168.  
  169.     load.l a0-a2
  170.  
  171.     fail    ; Comment je fais ici ?
  172.  
  173.     move.l GWVA_WIND_OBJ_SPEC_PTR(a0),a1
  174.     move.w #0,d0
  175.     move.w #7,d1
  176.     clr.w d2
  177.     bsr GWVA_FORM_WIND_OBJ_PRG_REDRAW_PART
  178.  
  179.     move.w #GWVA_NO_ERROR_GENERIC,d7
  180.     move.w #GWVA_PRGRET_CONSUMED,d6
  181.     rts
  182. .fichier_scrap_nul:
  183. .erreur_lecture_clipboard:
  184. .pas_de_texte_editable_dans_fenetre:
  185. .pas_fenetre_formulaire:
  186.  
  187.     endc    ; ifd MDL_FORM_EDITABLE_TEXT
  188.  
  189. .pas_de_ctrlv_possible:
  190.     move.w #GWVA_ERROR_GENERIC,d7
  191.     move.w #GWVA_PRGRET_CONSUMED,d6
  192.     rts
  193.